﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.SqlClient;
using DATA;
using ENTIDADES;

namespace DATA
{
    public class EmpleadoDAO
    {
        private static EmpleadoDAO instance = null;
        private EmpleadoDAO() { }
        public static EmpleadoDAO getInstance()
        {
            if (instance == null)
            {
                instance = new EmpleadoDAO();
            }
            return instance;
        }

        public List<Empleado> listadoEmpleado(int idTipoEmpleado)
        {
            List<Empleado> lstResultado = null;
            Conexion strCNN = new Conexion();
            SqlConnection cnn = new SqlConnection(strCNN.obtenerConexion());
            cnn.Open();

            String query = "select idempleado,nombres,ap_paterno,ap_materno,DNI,direccion,estado,idtipoempleado from empleado  where (idtipoempleado=" + idTipoEmpleado + " OR " + idTipoEmpleado + "=0) AND estado=1";
            SqlCommand objComm = new SqlCommand(query, cnn);
            SqlDataReader reader = objComm.ExecuteReader();

            lstResultado = new List<Empleado>();
            while (reader.Read())
            {
                Empleado objEmpleado = new Empleado();
                objEmpleado.idempleado = Convert.ToInt32(reader["idempleado"]);
                objEmpleado.nombres = (reader["nombres"]).ToString();
                objEmpleado.ap_paterno = (reader["ap_paterno"]).ToString();
                objEmpleado.ap_materno = (reader["ap_materno"]).ToString();
                objEmpleado.DNI = (reader["DNI"]).ToString();
                objEmpleado.direccion = (reader["direccion"]).ToString();
                objEmpleado.estado = Convert.ToBoolean(reader["estado"]);
                objEmpleado.objTipoEmpleado = TipoEmpleadoDAO.getInstance().get(Convert.ToInt32(reader["idtipoempleado"]));

                lstResultado.Add(objEmpleado);
            }
            cnn.Close();

            return lstResultado;
        }

        public Empleado get(int idEmpleado)
        {
            Empleado objEmpleado = null;

            Conexion strCNN = new Conexion();
            SqlConnection cnn = new SqlConnection(strCNN.obtenerConexion());
            cnn.Open();
            String query = "select nombres,ap_paterno,ap_materno,DNI,direccion,estado,idtipoempleado from empleado  where idempleado =" + idEmpleado;
            SqlCommand objComm = new SqlCommand(query, cnn);
            SqlDataReader reader = objComm.ExecuteReader();

            if (reader.Read())
            {
                objEmpleado = new Empleado();
                objEmpleado.idempleado = idEmpleado;
                objEmpleado.nombres = (reader["nombres"]).ToString();
                objEmpleado.ap_paterno = (reader["ap_paterno"]).ToString();
                objEmpleado.ap_materno = (reader["ap_materno"]).ToString();
                objEmpleado.DNI = (reader["DNI"]).ToString();
                objEmpleado.direccion = (reader["direccion"]).ToString();
                objEmpleado.estado = Convert.ToBoolean(reader["estado"]);
                objEmpleado.objTipoEmpleado = TipoEmpleadoDAO.getInstance().get(Convert.ToInt32(reader["idtipoempleado"]));
            }
            cnn.Close();

            return objEmpleado;
        }
    }
}
